package org.wangchaocheng.cloudgallery.api.user;

import org.wangchaocheng.cloudgallery.commond.user.UserModifyCmd;
import org.wangchaocheng.cloudgallery.commond.user.UserRegisterCmd;
import org.wangchaocheng.cloudgallery.commond.user.UserRoleSaveCmd;
import org.wangchaocheng.cloudgallery.dto.common.PageDTO;
import org.wangchaocheng.cloudgallery.dto.user.UserDTO;
import org.wangchaocheng.cloudgallery.query.user.UserPageQry;

/**
 * @author wangchaocheng
 * @date 2025-03-01 10:30:19
 */
public interface UserServiceI {

    /**
     * 用户注册
     *
     * @param cmd 注册命令
     */
    void register(UserRegisterCmd cmd);

    /**
     * 修改用户信息
     *
     * @param cmd 修改命令
     */
    void modify(UserModifyCmd cmd);

    /**
     * 根据id查询用户
     *
     * @param userId 用户id
     * @return {@link UserDTO}
     */
    UserDTO findById(Long userId);

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return {@link UserDTO}
     */
    UserDTO findByUsername(String username);

    /**
     * 分页查询用户
     *
     * @param qry 查询
     * @return {@link PageDTO}<{@link UserDTO}>
     */
    PageDTO<UserDTO> listPageUser(UserPageQry qry);

    /**
     * 为用户分配角色
     *
     * @param userRoleSaveCmd 命令
     */
    void assignUserRoles(UserRoleSaveCmd userRoleSaveCmd);
}
